// index.js
import { findBanner, findNav, findTag, findHouse } from '../../utils/api'
Page({
  /**
   * 页面的初始数据
   */
  data: {
    banners: [], //轮播图数据
    navList: [], //导航列表数据
    tagList: [], //房屋标签列表数据
    page: 1, //当前页
    size: 5, //当前显示条数
    houseList: [], //房屋列表数据
    status: 1, // 用来存储4种状态, 1----有数据,2----没有数据,3----报错,4----正在加载
  },
  // 跳转至月租页面
  toMonthRent() {
    wx.navigateTo({
      url: '/pages/monthRent/monthRent',
    })
  },
  // 跳转至房屋详情页面
  toDetail() {
    wx.navigateTo({
      url: '/pages/detail/detail',
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getBanners()
    this.getNavList()
    this.getTagList()
    this.getHouseList()
  },
  // 获取轮播图数据
  async getBanners() {
    try {
      const result = await findBanner()
      // console.log(result)
      this.setData({
        banners: result.data,
      })
    } catch (error) {
      console.log(error)
    }
  },
  //获取导航列表数据
  async getNavList() {
    try {
      const result = await findNav()
      // console.log(result);
      this.setData({
        navList: result.data.multi_product,
      })
    } catch (error) {
      console.log(error)
    }
  },
  //获取房屋标签列表数据
  async getTagList() {
    try {
      const result = await findTag()
      this.setData({
        tagList: result.data,
      })
    } catch (error) {
      console.log(error)
    }
  },
  //获取房屋列表数据
  async getHouseList() {
    try {
      let { page, size, houseList } = this.data // 取出页码和每页的条数
      // 接口调用前先设定状态为加载
      this.setData({ status: 4 }) // 正在加载...
      //调用接口
      const result = await findHouse(page, size)
      // console.log(result)
      if (result.code !== 200) {
        this.setData({ status: 3 }) // 没有数据
        return
      }
      // 此处数据必定是成功的
      // 如果条数是5条,一定有数据, 状态为1
      // 如果条数小于5,说明是最后一页,以后就没有数据了
      if (result.data.result.length === 0) {
        // 没有数据
        this.setData({ status: 2 })
        return
      }
      // 有数据或者即将没有数据,都重新更新一次状态
      this.setData({
        status: result.data.result.length < 5 ? 2 : 1,
      })
      // 这段代码是将 result.data.result 数组中的所有元素依次添加到 houseList 数组中。在JavaScript中， push() 方法用于向数组的末尾添加一个或多个元素。通过使用 ... 操作符，可以将一个数组中的元素逐个添加到另一个数组中，而不是将整个数组作为单个元素添加。因此， houseList.push(...result.data.result) 的作用是将 result.data.result 数组中的所有元素依次添加到 houseList 数组的末尾。
      houseList.push(...result.data.result)
      // goodsList.push(...result.data.records)
      // 更新数据
      this.setData({
        houseList,
        page: ++page,
      })
    } catch (error) {
      this.setData({ status: 3 }) // 报错状态
      console.log(error)
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 触底后继续获取下一页的数据,下一页有数据才这么做
    this.data.status === 1 && this.getHouseList()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
})
